やっと残業終わって帰ろうというときになって、こんなJavaScriptのブラウザ間非互換性を見つけていまいました。
内容 §
Firefoxはfor-in文で文字列を列挙できるようです。
これが可能なのはFirefoxだけのようです。
Firefox 1.0.7では可能。Internet Explorer 6.0とOpera 8.5ではできませんでした。
検証プログラム §
以下をWebブラウザのアドレス欄に入力します。
javascript:var s="abc"; for( var i in "abc" ) { alert(s[i]); }
Firefox 1.0.7の場合のみ、3回メッセージが表示され、それぞれ"a", "b", "c"となります。
Internet Explorer 6.0とOpera 8.5では何も表示されません。
対策 §
きちんと調べていませんが。
.NET Frameworkでは文字列がforeach構文で列挙できるのはよくある機能なのでうっかり流されそうになりますが、たぶんJavaScriptには無い機能ではないかと思います。
このような機能を、.NET Frameworkプログラミングのノリで使わないように注意すれば良いでしょう。
感想 §
しかし、.NET Frameworkのノリで使えてしまうのが同じMSのIEではなくFirefoxというのが不思議。